package cn.gg.benchmark.cases;

/**
 * <code>IBenchmarkable</code>定义了任何一项测试通用的三个接口:<br>
 * <code>init()</code>用于在测试前进行必要的初始化；<br>
 * <code>benchmark()</code>包含了实际的测试逻辑；<br>
 * <code>release()</code>在测试项目结束后进行必要的清理。<br>
 * 
 * @author Jarod Yv
 */
public interface IBenchmarkable {
	/**
	 * init接口主要用于在开始一项benchmark测试前，进行必要的初始化和资源加载工作。
	 */
	public abstract void init();

	/**
	 * benchmark测试代码，是IBenchmarkable的主要工作,包含主要的测试逻辑，是整个测试系统的核心。
	 */
	public abstract void benchmark();

	/**
	 * 完成测试后对资源进行必要的清理，并对线程调度。
	 */
	public abstract void release();
}
